#!/bin/bash

# 设置公共参数
#仓库前缀
DOCKER_REGISTRY="registry.cn-hangzhou.aliyuncs.com/xbenben"
#镜像
DOCKER_IMAGE="spring-boot-init"
#镜像标签
DOCKER_IMAGE_TAG="latest"
#启动端口
DOCKER_PORT="9011"
# 远程仓库地址和分支
CODE_REMOTE_REPO="https://gitee.com/tang-orange/spring-boot-init.git"
CODE_BRANCH="master"
CODE_PATH="/opt/deploy/code/init-demo"
# 拼接 APP启动容器名称_NAME
APP_NAME="my_$DOCKER_IMAGE"

# 切换到指定目录

# 检查目录是否存在，如果不存在则创建
if [ ! -d "$CODE_PATH" ]; then
  mkdir -p "$CODE_PATH"
fi

# 切换到指定目录
cd "$CODE_PATH"
echo "切换到指定目录：cd "$CODE_PATH""

# 检查当前文件夹是否有git管理，如果没有，则进行初始化
if [ ! -d ".git" ]; then
  git init
  echo "增加远程git——path配置 ：git remote add origin $CODE_REMOTE_REPO"
  git remote add origin $CODE_REMOTE_REPO
fi

# 更新远程仓库
echo "更新远程仓库：git remote update && git pull origin $CODE_BRANCH"
git remote update && git pull origin $CODE_BRANCH

# 检查上一条命令的执行状态
if [ $? -ne 0 ]; then
  echo "Git pull failed"
  exit 1
fi

# 检查 Docker 是否已安装
if ! command -v docker &>/dev/null; then
  echo "Docker 未安装，开始安装 Docker..."

  # 安装 Docker
  curl -fsSL https://get.docker.com -o get-docker.sh
  sudo sh get-docker.sh

  # 启动 Docker 服务
  sudo systemctl start docker

  # 将当前用户添加到 docker 用户组（可选）
  sudo usermod -aG docker $USER

  echo "Docker 安装完成。"
fi
# 停止并删除容器
echo "停止并删除容器；docker rm -f $APP_NAME"
docker rm -f $APP_NAME

# 清理无用的镜像
echo "清理无用的镜像:docker image prune -f"
docker image prune -f

# 构建并打包应用程序
#mvn -Dmaven.test.skip=true clean package jib:dockerBuild
echo "建并打包应用程序：mvn -Dmaven.test.skip=true clean package jib:dockerBuild -Ddocker.image.name=$DOCKER_IMAGE -Ddocker.image.version=$DOCKER_IMAGE_TAG -Ddocker.container.port=$DOCKER_PORT"
mvn -Dmaven.test.skip=true clean package jib:dockerBuild -Ddocker.image.name=$DOCKER_IMAGE -Ddocker.image.version=$DOCKER_IMAGE_TAG -Ddocker.container.port=$DOCKER_PORT

# 检查上一条命令的执行状态
if [ $? -ne 0 ]; then
  echo "Maven build failed"
  exit 1
fi

# 运行容器
echo "运行容器：docker run -d -p $DOCKER_PORT:$DOCKER_PORT --name $DOCKER_IMAGE:$DOCKER_IMAGE_TAG"
docker run -d -p $DOCKER_PORT:$DOCKER_PORT --name $APP_NAME $DOCKER_IMAGE:$DOCKER_IMAGE_TAG

# 检查上一条命令的执行状态
if [ $? -ne 0 ]; then
  echo "Docker run failed"
  exit 1
fi

# 查看容器日志
echo "查看容器日志：docker logs -f $APP_NAME"
docker logs -f $APP_NAME
exit 0
